package com.jdk.learn;

import java.util.*;

/**
 * Created by baiguantao on 2017/5/23.
 */
public class Java8 {
    /**
     * java8循环
     * 可以不判断size=0
     * 不能非空，非空需要处理
     * string->{}
     * string类型是根据list的<E> E确定的
     */
    public  static  void getForEach(){
        List<String> list=new ArrayList<String>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.stream().forEach(string->{
            System.out.println("-----"+string);
        });
        List<String> list2=null;
        List<String> list3=new ArrayList<String>();
        list3.add("2333");
       /* list3.add("44");
        list3.add("3");*/
       //取非空的  不报异常  即list2的时候也不报错
        Optional< List<String>> list3o=Optional.ofNullable(list3);
        list3o.orElseGet(Collections::emptyList).stream().forEach(string->{
            System.out.println("2-----"+string);
        });
    }

    public  static  String Optional(String msg){
        System.out.print("原始数据:"+msg);
        Optional<String> res=Optional.ofNullable(msg);
        Optional<String> newres=res.flatMap(r->{
            if (r.equals("")||r==null) {
                //System.out.println("我是r:"+r+"----");
                return Optional.of("defalut");
            }else{
                return Optional.of(r);
            }
        });
        System.out.println(",结果:"+newres.orElse("defalutnew"));
        return newres.orElse("defalutnew");
    }

    public static void main(String[] args) {
//        getForEach();
        System.out.println("最终输出："+Optional(null));
        System.out.println("最终输出："+Optional(""));
    }
}
